/* Calcula digito verificador de rut. */
function validarRut(idNombre)
{
	rut = document.getElementById(idNombre.id);
	
	if(rut.value.indexOf("-") != -1)
	{
		rut.value = rut.value.substring(0, rut.value.indexOf("-"));
	}
	
	if(!rut.value || !rut.value.length || typeof rut.value !== 'string')
	{
		return "Dato no v&aacute;lido";
	}
	
	var secuencia = [2, 3, 4, 5, 6, 7, 2, 3];
	var sum = 0;
	
	for(var i = rut.value.length - 1; i >= 0; i--)
	{
		var d = rut.value.charAt(i)
		sum += new Number(d) * secuencia[rut.value.length - (i + 1)];
	};
	
	var rest = 11 - (sum % 11);
	
	if(rest == 11)
	{
		rut.value += "-" + 0;
	}
	else if(rest == 10)
	{
		rut.value += " - K";
	}
	else if(isNaN(rest))
	{
		rut.value = "ERROR";
	}
	else
	{
		rut.value += "-" + rest;
	}
}

/* Sobreescritura de los mensajes del plugin de jQuery Validator. */
jQuery.extend(jQuery.validator.messages, {
    required: "Este es un campo requerido.",
    remote: "Por favor corrija este campo.",
    email: "Por favor ingrese una dirección de email válida.",
    url: "Por favor ingrese una dirección URL válida.",
    date: "Por favor ingrese una fecha válida.",
    dateISO: "Por favor ingrese una fecha en formato ISO.",
    number: "Por favor ingrese sólo números.",
    digits: "Por favor ingrese sólo digitos.",
    creditcard: "Por favor ingrese una tarjeta de crédito válida.",
    equalTo: "Por favor ingrese un valor igual al anterior.",
    accept: "Por favor ingrese una extensión válida.",
    maxlength: jQuery.validator.format("Por favor no ingrese más de {0} caracteres."),
    minlength: jQuery.validator.format("Por favor ingrese al menos {0} caracteres."),
    rangelength: jQuery.validator.format("Por favor ingrese un valor entre {0} y {1} caracteres de largo."),
    range: jQuery.validator.format("Por favor ingrese un valor entre {0} y {1}."),
    max: jQuery.validator.format("Por favor ingrese un valor menor o igual a {0}."),
    min: jQuery.validator.format("Por favor ingrese un valor mayor o igual a {0}.")
});

/* Convierte xml a json. */
function xmlAJson(xml) {
 
	var obj = {};

	if(xml.nodeType == 1) 
	{
		/* Atributos. */
		if( xml.attributes.length > 0 )
		{
			obj["@attributes"] = {};
			for(var j = 0; j < xml.attributes.length; j++)
			{
				var attribute = xml.attributes.item(j);
				obj["@attributes"][attribute.nodeName] = attribute.nodeValue;
			}
		}
	}
	else if(xml.nodeType == 3)
	{
		obj = xml.nodeValue;
	}

	/* Hijos. */
	if(xml.hasChildNodes())
	{
		for(var i = 0; i < xml.childNodes.length; i++)
		{
			var item = xml.childNodes.item(i);
			var nodeName = item.nodeName;

			if(typeof(obj[nodeName]) == "undefined")
			{
				obj[nodeName] = xmlAJson(item);
			}
			else
			{
				if(typeof(obj[nodeName].push) == "undefined")
				{
					var old = obj[nodeName];
					obj[nodeName] = [];
					obj[nodeName].push(old);
				}

				obj[nodeName].push(xmlAJson(item));
			}
		}
	}

	return obj;
};

/* Busca parametros en las urls. */
function requestJS(variable)
{
	var queryString = window.location.search.substring(1);
	
	queryString = queryString.split("&");
	
	for(var i = 0; i < queryString.length; i++)
	{
		if(queryString[i].indexOf(variable) != -1)
		{
			if(queryString[i].indexOf("=") != -1)
			{
				return queryString[i].substring(queryString[i].indexOf("=") + 1);
			}
		}
	}
	
	return "0";
}
